home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The 640 MEG Shareware Studio 5
/
The 640 Meg Shareware Studio CD-ROM Volume V (Data Express)(1994).ISO
/
amiga
/
sprdrw02.lha
/
SpiroDraw02.doc
< prev
next >
Wrap
Text File
|
1994-03-14
|
19KB
|
345 lines
User Document for SpiroDraw02 94-03-13
I. What is this program and who wrote the thing?
------------------------------------------------
SpiroDraw is a program that simulates the spiral drawing
child's toy. It is almost as rewarding to watch the design being
drawn by the computer as I remember it being to actually draw
the design yourself, using the pins, and wheels and everything.
It is certainly more accurate since the computer does not have
to worry about holding all the wheels and guides perfectly still
while winding the drawing wheel around inside or outside the
guide wheel. If you have ever used this toy then I am sure
you know what I mean!
This program was written in ACE 2.0 (c)David Benn
on an A2000HD (running OS 2.1)
If you get any enjoyment or productive use from this program,
drop me a line. I'd like to hear from you (if you REALLY
like it, drop a buck or two in the envelope!).
Charles E. Kenney, II
4 Burbank Circle
Framingham, MA 01701
USA
phone: (508) 877-5959
or: (508) 877-4771
If you send me a disk and a stamped self-addressed disk mailer,
I will also send you the latest version of 'SpiroDraw' and the
source code alomg with any other little ditties I come up with.
Thanks.
-ck.
P.S. Thanks again to David Benn for his wonderful compiler, "ACE".
II. Program Set-up and Menu Descriptions
----------------------------------------
'SpiroDraw' starts with default setting for a SpiroDraw design so
you can see immediately what 'SpiroDraw' can do. Following are
decriptions of the various menus and resultant actions:
The "Project" menu contains the "standard" Load and Save functions:
Load - The user may load data for a previously saved design.
Data files for SpiroDraw alway have a ".ddf" extension.
The current data is "backed-up" before the data is
loaded (See "Last Data..." above).
Save - The user may save data for a design if desired.
If the user does not include a ".ddf" file extension,
'SpiroDraw' adds it automatically.
Draw - Draws the SpiroDraw design for the data and other
parameters currently in effect for 'SpiroDraw'.
Quit - Well... This is how to exit 'SpiroDraw'!
The "Design" menu contains all the functions
the user needs to set the design parameters:
Set Data... - Invokes a screen which allows the user to specify
the three "size" parameters for the SpiroDraw
design; Guide Ring, Drawing Wheel and Pen-Hole
(see "A few words about 'SpiroDraw'" below for a
description of these).
The user may also elect to place the Drawing Wheel
inside, outside or both on the Guide Ring.
Clicking on the "Done" gadget exits this function
and the user is asked whether or not to draw the
new design using the new design parameters.
Wheel Inside - If this Menu item does not have the "check-mark"
then the "check-mark" is placed in the menu and
'SpiroDraw' will place the Drawing Wheel inside
the Guide Ring for subsequent SpiroDraws.
If this Menu item does have the "check-mark"
then the "check-mark" is removed from the menu
and 'SpiroDraw' will not place the Drawing Wheel
inside the Guide Ring for subsequent SpiroDraws.
'SpiroDraw' will also automatically "check-mark"
the "Draw Outside" menu if it is not already.
Wheel Outside - If this Menu item does not have the "check-mark"
then the "check-mark" is placed in the menu and
'SpiroDraw' will place the Drawing Wheel outside
the Guide Ring for subsequent SpiroDraws.
If this Menu item does have the "check-mark"
then the "check-mark" is removed from the menu
and 'SpiroDraw' will not place the Drawing Wheel
outside the Guide Ring for subsequent SpiroDraws.
'SpiroDraw' will also automatically "check-mark"
the "Draw Inside" menu if it is not already.
Detail... - Invokes a window which allows the user to specify
how detailed the drawn design will be. Clicking
on the "Next" gadget cycles through all possible
choices (each selection also causes 'SpiroDraw' to
take progressively longer to draw the design):
DOTTY - plots dots at visible intervals rather than
drawing a continuous line while the design
is being drawn (dots may be connected with
a line between each dot - see the description
for the "Connect Dots" menu item below).
SKETCHY - plots dots at smaller intervals than "DOTTY"
COARSE - plots dots at _really_ small intervals.
FINE - plots dots so close together that they are
a continuous line when 'SpiroDraw' draws.
Connect Dots - The user may "check-mark" this menu item to connect
the dots that are plotted by 'SpiroDraw' with a line
to give the design a continuous-line appearance.
This menu item is automatically disabled if the
selects "FINE" in the "Detail..." menu above since
the design will already have a continous appearance.
Clear Canvas - The user may "check-mark" this menu item to clear
the drawing "canvas" before drawing each design.
If this menu item is not "check-marked" then many
designs can be drawn "on top of" each other.
Last Data... - "SpiroDraw" has an design buffer capable of holding
8 sets of design data (Guide Ring, Drawing Wheel
and Pen-Hole parameters). When the user selects
this menu item, the previous data in use before
the current data is placed into the current data
and the other 7 sets of data are "bubbled-up", with
the current data being "sent down" to the 8th set
of data. Note that any time the user modifies the
current data by loading new data from disk, by
exiting the "Set Data..." window after making changes,
or by selecting "Random Data..." (below), the
current data is "backed-up" to the "1st" buffer,
the "1st" to the "2nd", the "2nd" to the "3rd", etc.
The "8th" set of data gets "pushed off the cliff".
Random Data... - This menu item randomizes the design sizes for
the Guide Ring, Drawing Wheel and Pen-hole.
The user is then asked whether or not to "see"
the randomized design. If the user elects to
"see" the new random sizes, 'SpiroDraw' invokes
the "Set Data..." function (see above).
The current data is "backed-up" before the data
is randomized (See "Last Data..." above).
The "Preferences" menu contains the following functions:
Ask Save - Any time data is changed in "SpiroDraw", the user is
asked whether or not to save the "old" data if this
menu item is "check-marked". "UN-check-marking"
this menu item stops "SpiroDraw" from asking.
It _can_ be annoying. "SpiroDraw" _always_ asks
the user whether to save the new data (if it has
been changed) when the "Quit" menu item is selected.
Show Activity - When this menu item is "check-marked", a small
rotating wheel is displayed in the center of the
screen while the design is being drawn. This is
done to show that "SpiroDraw" is "doing something".
It is difficult to see the design changing sometimes
if the Pen-Hole value is very near zero or if the
sizes of the Guide Ring and the Drawing Wheel are
very nearly equal. There are instances when this
little rotating wheel would ruin the appearance of
the center of the design so to avoid this, the user
may "UN-check-mark" this menu item.
Visual Round
Screen Round - This is a "cycling menu" function. Each time
this menu item is selected the function is
"swapped" to the other selection,
"Visual Round" to "Screen Round" and vice versa.
If the user selects "Visual Round", the design will be
drawn with a perfectly circular appearance on the screen.
If the user selects "Screen Round", the design will be
drawn with a slightly oval appearance on the screen, but
this is a useful selection if the design is "snapped" as
an IFF file (using a "screen-capture-to-IFF-file" program
and then imported into a paint package capable of animation.
Once this is done, the design can be rotated while still
maintaining its "roundness". This has been used successfully
with DPaint.
Resolution... - Invokes a window which allows the user to specify
different screen resolutions. Clicking on the
"Next" gadget cycles through all possible choices:
If the user selects "LOW" then 'SpiroDraw' will
change to low resolution (320,200 screen).
If the user selects "MEDIUM" then 'SpiroDraw' will
change to medium resolution (640,200 screen).
If the user selects "HIGH" then 'SpiroDraw' will
change to high resolution (320,200 screen).
III. A few words about 'SpiroDraw'
--------------------------------------
The Guide Ring was, for the child's toy, the plactic ring with
"gearing" on each side that was so hard to hold perfectly in place
on the paper while winding the Drawing Wheel around the inside or
outside of the Guide Ring. Even pinning the Guide Ring down through
the paper onto cardboard was never much help either! 'SpiroDraw'
holds the Guide Ring in place quite nicely though. 'SpiroDraw' places
places the Guide Ring in the center of the screen.
The Drawing Wheel was, for the child's toy, the plastic "wheel"
with "gearing" (to mesh with the Guide Ring) that was so hard to keep
engaged to the gearing of the Guide Ring while winding the Drawing
Wheel around the inside or outside of the Guide Ring. If you went
too slowly you would sometimes get "stuck" due to the "cam" effect
of the pen-hole in the Drawing Wheel that you had chosen, especially
if you chose a pen-hole way out near the edge of the Drawing Wheel!
If you went too fast the the gearing between the Drawing Wheel and
the Guide Ring would slip or disengage altogether and you would draw
a nice ugly, frantic and ruinous line across your design! This was
REALLY frustrating, especially if you were "almost done"... and only
6 years old! 'SpiroDraw' will never know gear slips and getting
stuck by the "cam" effect!
The "Pen-Hole" was, for the child's toy, the little hole in the
Drawing Wheel (there were lots of these little holes in each wheel)
that you would put your pen into which would determine the "character"
of the design - the holes closest to the center of the Drawing Wheel
would produce "circular" designs (for 'SpiroDraw', small values for
the Pen-hole distance from the center of the Drawing Wheel), and the
holes closest to the edges of the Drawing Wheel would produce very
"spirally" designs (for 'SpiroDraw', large values for the Pen-hole
distance from the center of the Drawing Wheel). Note that 'SpiroDraw'
allows a distance for the Pen-hole which is larger than the radius of
the Drawing Wheel but not larger than 94 for LOW and MEDIUM RESOLUTION
or 191 for HIGH RESOLUTION. Again, you can go ahead and TRY putting
a pen into a hole on the Drawing Wheel that is larger than the Drawing
Wheel itself using the child's toy!
IV. A "useful" way to use this program
(depending on your definition of "useful")
-----------------------------------------------
Here is a neat little tidbit for using this program with a
Paint package (if you would like to play with or animate any of
your designs that you generate with this program):
For DPaint, anyway, this works nicely...
1. Start up one of those "snap" programs "in the background"
which is capable of saving a screen as an IFF file.
I have used "SNAPIT!" (by... Oh, I forget) successfully.
2. Generate your design using the "screen" roundness
choice during the "user input" routine. This choice
is known to work for DPaint.
3. Once the design has finished being generated, shrink
the "User Input" window as much as is necessary in
the design window and execute whatever key sequence
is required by the "snap" program you have and save
the design as an IFF file.
4. Call up your Paint package and do whatever. I have
had fun "rolling" my designs across the screen or
"into the distance" or even using the design as a
circular border for other brushes, etc. Be creative!
The following history also appears verbatim as a comment
at the top of the source program since virtually any significant
change to the source will result in a significant change to the
documentation and vice versa. Also, if you have this user doc
and not the source, you can see any revision information and
when it is/was implemented.
Note that as of the first writing of this document
(for SpiroDraw01), 94-02-17, this little program was
only 3 days shy of its 10th birthday!
Great advertising hook - "A DECADE IN THE MAKING!"
PROGRAM REVISION HISTORY (in reverse chronological order)
----------------------------------------------------------------
Added the option to Save the screen as an IFF file
(if this capability is added to ACE) NOT YET!
Uploaded to AMINET as SpiroDraw02 94-03-13
Rewrite Documentation for Menus and new features 94-03-13
All the new stuff 94-03-13
Added more robust file-handling 94-03-11
Added more pretty-up code 94-03-11
Added switches to ask to save data every time
data is changed or to not ask and whether to show
the little activity loop while design is drawn 94-03-11
Added activity loop while design is being drawn 94-03-11
Added memory buffer for 8 designs 94-03-11
Added some more error handling and pretty-up code 94-03-10
Added RANDOMIZATION of design parameters 94-03-09
Debugged more GADGET code 94-03-09
More GADGET coding 94-03-09
Debugged new gadget code 94-03-08
Coded "design size" parameters using GADGETs 94-03-08
Coded "resolution" parameter using GADGETs 94-03-07
Coded "detail" parameter using GADGETs 94-03-07
Ask the user to draw immediately upon reading a .spd 94-03-07
Added more robust File I/O error handling...
... could still use more 94-03-07
Ability to choose (and now change) SCREEN resolution
"pulled" into the main program 94-03-06
MENU and code to Save/Load design parameters 94-03-04
Added Dummy MENUs for Load and Save 94-03-04
Added additional design types skeleton code and menus 94-03-04
Replaced "hack" user inputs with MENU constructs
This would enable the user to set up all the
"design" parameters and change only those
parameters desired while maintaining all the
others (user doc changed too) 94-03-03
UPLOADED to Aminet as SpiroDraw01 94-02-25
Cleaned-up the plot loop, eliminated some "goto"s 94-02-21
Cleaned up screen and window sizes, user input text 94-02-20
Fixed new "revolutions" bugs (variable rvlv)
introduced while cleaning-up the code 94-02-19
Program now runs from WorkBench 94-02-17
The user is now asked for "Pen-hole distance"
before being asked "inside, outside, or both"
This order seemed to be more logical after as
a result of writing the documentation 94-02-17
Finally wrote the documentation 94-02-17
More refinement of programming constructs 94-02-16
Refinement of programming constructs 94-02-15
Revived from my AmigaBasic hacks and converted
to ACE (great package, David Benn!) 94-02-14
Converted from C-64 SIMON'S BASIC to AmigaBasic 87-11-20
Program initiated and hacked into working order
using SIMON'S BASIC for the Commodore 64 (tm) 84-02-20